package com.jianan.mis.data.domain.base;

import java.io.Serializable;


/**
 * This is an object that contains data related to the school table.
 * Do not modify this class because it will be overwritten if the configuration file
 * related to this class is modified.
 *
 * @hibernate.class
 *  table="school"
 */

public abstract class BaseSchool  implements Serializable {

	public static String REF = "School";
	public static String PROP_PHONE = "Phone";
	public static String PROP_STUDENT_COUNT = "StudentCount";
	public static String PROP_RANK = "Rank";
	public static String PROP_APPLY_END_DATE = "ApplyEndDate";
	public static String PROP_LANG_REQ = "LangReq";
	public static String PROP_PROPERTY = "Property";
	public static String PROP_GRADUATE_RATE = "GraduateRate";
	public static String PROP_PHONE_INTERVIEW = "PhoneInterview";
	public static String PROP_MAIL = "Mail";
	public static String PROP_APPLY_FEE = "ApplyFee";
	public static String PROP_PUBLIC = "Public";
	public static String PROP_ENTER_REQUIREMENT = "EnterRequirement";
	public static String PROP_DOUBLE_MATRICULATE = "DoubleMatriculate";
	public static String PROP_WEBSITE = "Website";
	public static String PROP_COPARTNER = "Copartner";
	public static String PROP_FEE = "Fee";
	public static String PROP_CONTACT_NAME = "ContactName";
	public static String PROP_FAX = "Fax";
	public static String PROP_SPECIALITY = "Speciality";
	public static String PROP_SCHOLARSHIP = "Scholarship";
	public static String PROP_COUNTRY = "Country";
	public static String PROP_CITY = "City";
	public static String PROP_NAME = "Name";
	public static String PROP_STATE = "State";
	public static String PROP_ADDRESS = "Address";
	public static String PROP_OVERSEA_STUDENT_RATE = "OverseaStudentRate";
	public static String PROP_ID = "Id";
	public static String PROP_REMARK = "Remark";


	// constructors
	public BaseSchool () {
		initialize();
	}

	/**
	 * Constructor for primary key
	 */
	public BaseSchool (java.lang.Integer id) {
		this.setId(id);
		initialize();
	}

	/**
	 * Constructor for required fields
	 */
	public BaseSchool (
		java.lang.Integer id,
		com.jianan.mis.data.domain.Country country,
		java.lang.String name,
		boolean m_public,
		java.lang.String property,
		java.lang.String contactName,
		java.lang.String phone,
		java.lang.String fax,
		java.lang.String copartner) {

		this.setId(id);
		this.setCountry(country);
		this.setName(name);
		this.setPublic(m_public);
		this.setProperty(property);
		this.setContactName(contactName);
		this.setPhone(phone);
		this.setFax(fax);
		this.setCopartner(copartner);
		initialize();
	}

	protected void initialize () {}



	private int hashCode = Integer.MIN_VALUE;

	// primary key
	private java.lang.Integer id;

	// fields
	private java.lang.String name;
	private boolean m_public;
	private java.lang.String property;
	private java.lang.String langReq;
	private java.lang.String fee;
	private java.lang.String applyFee;
	private java.util.Date applyEndDate;
	private java.math.BigDecimal graduateRate;
	private java.lang.String rank;
	private java.math.BigDecimal studentCount;
	private java.math.BigDecimal overseaStudentRate;
	private java.lang.String scholarship;
	private java.lang.String remark;
	private java.lang.String website;
	private java.lang.String contactName;
	private java.lang.String address;
	private java.lang.String phone;
	private java.lang.String fax;
	private java.lang.String mail;
	private java.lang.String state;
	private java.lang.String city;
	private boolean doubleMatriculate;
	private java.lang.String enterRequirement;
	private java.lang.String speciality;
	private boolean phoneInterview;
	private java.lang.String copartner;

	// many to one
	private com.jianan.mis.data.domain.Country country;



	/**
	 * Return the unique identifier of this class
     * @hibernate.id
     *  generator-class="native"
     *  column="id"
     */
	public java.lang.Integer getId () {
		return id;
	}

	/**
	 * Set the unique identifier of this class
	 * @param id the new ID
	 */
	public void setId (java.lang.Integer id) {
		this.id = id;
		this.hashCode = Integer.MIN_VALUE;
	}




	/**
	 * Return the value associated with the column: name
	 */
	public java.lang.String getName () {
		return name;
	}

	/**
	 * Set the value related to the column: name
	 * @param name the name value
	 */
	public void setName (java.lang.String name) {
		this.name = name;
	}



	/**
	 * Return the value associated with the column: public
	 */
	public boolean isPublic () {
		return m_public;
	}

	/**
	 * Set the value related to the column: public
	 * @param m_public the public value
	 */
	public void setPublic (boolean m_public) {
		this.m_public = m_public;
	}



	/**
	 * Return the value associated with the column: property
	 */
	public java.lang.String getProperty () {
		return property;
	}

	/**
	 * Set the value related to the column: property
	 * @param property the property value
	 */
	public void setProperty (java.lang.String property) {
		this.property = property;
	}



	/**
	 * Return the value associated with the column: lang_req
	 */
	public java.lang.String getLangReq () {
		return langReq;
	}

	/**
	 * Set the value related to the column: lang_req
	 * @param langReq the lang_req value
	 */
	public void setLangReq (java.lang.String langReq) {
		this.langReq = langReq;
	}



	/**
	 * Return the value associated with the column: fee
	 */
	public java.lang.String getFee () {
		return fee;
	}

	/**
	 * Set the value related to the column: fee
	 * @param fee the fee value
	 */
	public void setFee (java.lang.String fee) {
		this.fee = fee;
	}



	/**
	 * Return the value associated with the column: apply_fee
	 */
	public java.lang.String getApplyFee () {
		return applyFee;
	}

	/**
	 * Set the value related to the column: apply_fee
	 * @param applyFee the apply_fee value
	 */
	public void setApplyFee (java.lang.String applyFee) {
		this.applyFee = applyFee;
	}



	/**
	 * Return the value associated with the column: apply_end_date
	 */
	public java.util.Date getApplyEndDate () {
		return applyEndDate;
	}

	/**
	 * Set the value related to the column: apply_end_date
	 * @param applyEndDate the apply_end_date value
	 */
	public void setApplyEndDate (java.util.Date applyEndDate) {
		this.applyEndDate = applyEndDate;
	}



	/**
	 * Return the value associated with the column: graduate_rate
	 */
	public java.math.BigDecimal getGraduateRate () {
		return graduateRate;
	}

	/**
	 * Set the value related to the column: graduate_rate
	 * @param graduateRate the graduate_rate value
	 */
	public void setGraduateRate (java.math.BigDecimal graduateRate) {
		this.graduateRate = graduateRate;
	}



	/**
	 * Return the value associated with the column: rank
	 */
	public java.lang.String getRank () {
		return rank;
	}

	/**
	 * Set the value related to the column: rank
	 * @param rank the rank value
	 */
	public void setRank (java.lang.String rank) {
		this.rank = rank;
	}



	/**
	 * Return the value associated with the column: student_count
	 */
	public java.math.BigDecimal getStudentCount () {
		return studentCount;
	}

	/**
	 * Set the value related to the column: student_count
	 * @param studentCount the student_count value
	 */
	public void setStudentCount (java.math.BigDecimal studentCount) {
		this.studentCount = studentCount;
	}



	/**
	 * Return the value associated with the column: oversea_student_rate
	 */
	public java.math.BigDecimal getOverseaStudentRate () {
		return overseaStudentRate;
	}

	/**
	 * Set the value related to the column: oversea_student_rate
	 * @param overseaStudentRate the oversea_student_rate value
	 */
	public void setOverseaStudentRate (java.math.BigDecimal overseaStudentRate) {
		this.overseaStudentRate = overseaStudentRate;
	}



	/**
	 * Return the value associated with the column: scholarship
	 */
	public java.lang.String getScholarship () {
		return scholarship;
	}

	/**
	 * Set the value related to the column: scholarship
	 * @param scholarship the scholarship value
	 */
	public void setScholarship (java.lang.String scholarship) {
		this.scholarship = scholarship;
	}



	/**
	 * Return the value associated with the column: remark
	 */
	public java.lang.String getRemark () {
		return remark;
	}

	/**
	 * Set the value related to the column: remark
	 * @param remark the remark value
	 */
	public void setRemark (java.lang.String remark) {
		this.remark = remark;
	}



	/**
	 * Return the value associated with the column: website
	 */
	public java.lang.String getWebsite () {
		return website;
	}

	/**
	 * Set the value related to the column: website
	 * @param website the website value
	 */
	public void setWebsite (java.lang.String website) {
		this.website = website;
	}



	/**
	 * Return the value associated with the column: contact_name
	 */
	public java.lang.String getContactName () {
		return contactName;
	}

	/**
	 * Set the value related to the column: contact_name
	 * @param contactName the contact_name value
	 */
	public void setContactName (java.lang.String contactName) {
		this.contactName = contactName;
	}



	/**
	 * Return the value associated with the column: address
	 */
	public java.lang.String getAddress () {
		return address;
	}

	/**
	 * Set the value related to the column: address
	 * @param address the address value
	 */
	public void setAddress (java.lang.String address) {
		this.address = address;
	}



	/**
	 * Return the value associated with the column: phone
	 */
	public java.lang.String getPhone () {
		return phone;
	}

	/**
	 * Set the value related to the column: phone
	 * @param phone the phone value
	 */
	public void setPhone (java.lang.String phone) {
		this.phone = phone;
	}



	/**
	 * Return the value associated with the column: fax
	 */
	public java.lang.String getFax () {
		return fax;
	}

	/**
	 * Set the value related to the column: fax
	 * @param fax the fax value
	 */
	public void setFax (java.lang.String fax) {
		this.fax = fax;
	}



	/**
	 * Return the value associated with the column: mail
	 */
	public java.lang.String getMail () {
		return mail;
	}

	/**
	 * Set the value related to the column: mail
	 * @param mail the mail value
	 */
	public void setMail (java.lang.String mail) {
		this.mail = mail;
	}



	/**
	 * Return the value associated with the column: state
	 */
	public java.lang.String getState () {
		return state;
	}

	/**
	 * Set the value related to the column: state
	 * @param state the state value
	 */
	public void setState (java.lang.String state) {
		this.state = state;
	}



	/**
	 * Return the value associated with the column: city
	 */
	public java.lang.String getCity () {
		return city;
	}

	/**
	 * Set the value related to the column: city
	 * @param city the city value
	 */
	public void setCity (java.lang.String city) {
		this.city = city;
	}



	/**
	 * Return the value associated with the column: double_matriculate
	 */
	public boolean isDoubleMatriculate () {
		return doubleMatriculate;
	}

	/**
	 * Set the value related to the column: double_matriculate
	 * @param doubleMatriculate the double_matriculate value
	 */
	public void setDoubleMatriculate (boolean doubleMatriculate) {
		this.doubleMatriculate = doubleMatriculate;
	}



	/**
	 * Return the value associated with the column: enter_requirement
	 */
	public java.lang.String getEnterRequirement () {
		return enterRequirement;
	}

	/**
	 * Set the value related to the column: enter_requirement
	 * @param enterRequirement the enter_requirement value
	 */
	public void setEnterRequirement (java.lang.String enterRequirement) {
		this.enterRequirement = enterRequirement;
	}



	/**
	 * Return the value associated with the column: speciality
	 */
	public java.lang.String getSpeciality () {
		return speciality;
	}

	/**
	 * Set the value related to the column: speciality
	 * @param speciality the speciality value
	 */
	public void setSpeciality (java.lang.String speciality) {
		this.speciality = speciality;
	}



	/**
	 * Return the value associated with the column: phone_interview
	 */
	public boolean isPhoneInterview () {
		return phoneInterview;
	}

	/**
	 * Set the value related to the column: phone_interview
	 * @param phoneInterview the phone_interview value
	 */
	public void setPhoneInterview (boolean phoneInterview) {
		this.phoneInterview = phoneInterview;
	}



	/**
	 * Return the value associated with the column: copartner
	 */
	public java.lang.String getCopartner () {
		return copartner;
	}

	/**
	 * Set the value related to the column: copartner
	 * @param copartner the copartner value
	 */
	public void setCopartner (java.lang.String copartner) {
		this.copartner = copartner;
	}



	/**
	 * Return the value associated with the column: country_id
	 */
	public com.jianan.mis.data.domain.Country getCountry () {
		return country;
	}

	/**
	 * Set the value related to the column: country_id
	 * @param country the country_id value
	 */
	public void setCountry (com.jianan.mis.data.domain.Country country) {
		this.country = country;
	}




	public boolean equals (Object obj) {
		if (null == obj) return false;
		if (!(obj instanceof com.jianan.mis.data.domain.School)) return false;
		else {
			com.jianan.mis.data.domain.School school = (com.jianan.mis.data.domain.School) obj;
			if (null == this.getId() || null == school.getId()) return false;
			else return (this.getId().equals(school.getId()));
		}
	}

	public int hashCode () {
		if (Integer.MIN_VALUE == this.hashCode) {
			if (null == this.getId()) return super.hashCode();
			else {
				String hashStr = this.getClass().getName() + ":" + this.getId().hashCode();
				this.hashCode = hashStr.hashCode();
			}
		}
		return this.hashCode;
	}


	public String toString () {
		return super.toString();
	}


}